package com.wx.service;


public interface SysGeneratorCodeService {


	/**
	 * 每天从 1 开始生成唯一标识
	 *
	 * @param key     要生成唯一标识的对象
	 * @param length  要生成为唯一标识后缀的长度。不包括需要附加的时间前缀
	 *                如果 haveDay = false 或者 length 长度小于标识后缀的长度则无效
	 * @param haveDay 是否要附加日期前缀
	 * @return 唯一标识
	 */
	String fetchDailyUUID(String key, Integer length, Boolean haveDay);

	/**
	 * 全局从 1 开始生成唯一标识
	 *
	 * @param key     要生成唯一标识的对象
	 * @param length  要生成为唯一标识后缀的长度。不包括需要附加的时间前缀
	 *                如果 haveDay = false 或者 length 长度小于标识后缀的长度则无效
	 * @param haveDay 是否要附加日期前缀。
	 * @return 唯一标识
	 */
	String fetchUUID(String key, Integer length, Boolean haveDay);


	/**
	 * 每天从 1 开始生成唯一标识
	 *
	 * @param prefix  前缀
	 * @param key     要生成唯一标识的对象
	 * @param length  要生成为唯一标识后缀的长度。不包括需要附加的时间前缀
	 *                如果 haveDay = false 或者 length 长度小于标识后缀的长度则无效
	 * @param haveDay 是否要附加日期前缀
	 * @return 唯一标识
	 */
	String fetchDailyUUIDWithPrefix(String key, String prefix, Integer length, Boolean haveDay);

	/**
	 * 全局从 1 开始生成唯一标识
	 * @param prefix  前缀
	 * @param key     要生成唯一标识的对象
	 * @param length  要生成为唯一标识后缀的长度。不包括需要附加的时间前缀
	 *                如果 haveDay = false 或者 length 长度小于标识后缀的长度则无效
	 * @param haveDay 是否要附加日期前缀。
	 * @return 唯一标识
	 */
	String fetchUUIDWithPreFix(String key, String prefix, Integer length, Boolean haveDay);

}
